'''
以数组 intervals 表示若干个区间的集合，其中单个区间为 intervals[i] = [starti, endi] 。请你合并所有重叠的区间，并返回一个不重叠的区间数组，该数组需恰好覆盖输入中的所有区间。

 

示例 1：

输入：intervals = [[1,3],[2,6],[8,10],[15,18]]
输出：[[1,6],[8,10],[15,18]]
解释：区间 [1,3] 和 [2,6] 重叠, 将它们合并为 [1,6].

来源：力扣（LeetCode）
链接：https://leetcode-cn.com/problems/merge-intervals
著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。
'''
class Solution(object):
    def merge(self, intervals):
        """
        :type intervals: List[List[int]]
        :rtype: List[List[int]]
        """
        intervals = sorted(intervals, key=lambda x: x[0])
        i=0
        res = [intervals[0]]
        for interval in intervals:
            if res[-1][0]<=interval[0]<=res[-1][1] and interval[1]>=res[-1][1]:
                res[-1][1] = interval[1]
            elif interval[0]>res[-1][1]:
                res.append(interval)
        return res

intervals = [[1,3],[2,6],[8,10],[15,18]]
Solution().merge(intervals)
